package single_;

public class SingleTon01 {

    public static void main(String[] args) {
//        GirlFriend instance = GirlFriend.getInstance();
//        System.out.println(instance);
//        GirlFriend instance2 = GirlFriend.getInstance();
//        System.out.println(instance2);
//        //由于gf是静态的，在加载的时候只会初始化一次
//        // 静态相关的在类加载的时候就调用，且只有一次
//        System.out.println(instance == instance2);//T

        System.out.println(GirlFriend.n1);
        //还没用gf这个对象，gf这个对象就已经创建好了，很着急，所以叫饿汉式
    }
}

//有一个类，GirFriend
//只能有一个女朋友
class GirlFriend {

    private String name;

    public static int n1 = 100;

    //为了能够在静态方法中，返回gf对象，需将其修饰为static
    private static GirlFriend gf = new GirlFriend("小红");
    //一旦类加载，这个对象就会被创建

    //如何保障我们只能创建一个 GirFriend 对象
    //饿汉式
    //1.将构造器私有化，就不能直接调构造器了
    //2.只能在类的内部直接创建,对象要做成static
    //3.提供一个公共的static方法，返回gf对象

    private GirlFriend(String name) {
        this.name = name;
    }

    //希望在没有创建对象的时候就调用GirlFriend方法，所以做成静态的
    public static GirlFriend getInstance() {
        return gf;
    }
}
